# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Games.V1.Model.Application do
  @moduledoc """
  The Application resource.

  ## Attributes

  *   `achievement_count` (*type:* `integer()`, *default:* `nil`) - The number of achievements visible to the currently authenticated player.
  *   `assets` (*type:* `list(GoogleApi.Games.V1.Model.ImageAsset.t)`, *default:* `nil`) - The assets of the application.
  *   `author` (*type:* `String.t`, *default:* `nil`) - The author of the application.
  *   `category` (*type:* `GoogleApi.Games.V1.Model.ApplicationCategory.t`, *default:* `nil`) - The category of the application.
  *   `description` (*type:* `String.t`, *default:* `nil`) - The description of the application.
  *   `enabledFeatures` (*type:* `list(String.t)`, *default:* `nil`) - A list of features that have been enabled for the application.
  *   `id` (*type:* `String.t`, *default:* `nil`) - The ID of the application.
  *   `instances` (*type:* `list(GoogleApi.Games.V1.Model.Instance.t)`, *default:* `nil`) - The instances of the application.
  *   `kind` (*type:* `String.t`, *default:* `nil`) - Uniquely identifies the type of this resource. Value is always the fixed string `games#application`.
  *   `lastUpdatedTimestamp` (*type:* `String.t`, *default:* `nil`) - The last updated timestamp of the application.
  *   `leaderboard_count` (*type:* `integer()`, *default:* `nil`) - The number of leaderboards visible to the currently authenticated player.
  *   `name` (*type:* `String.t`, *default:* `nil`) - The name of the application.
  *   `themeColor` (*type:* `String.t`, *default:* `nil`) - A hint to the client UI for what color to use as an app-themed color. The color is given as an RGB triplet (e.g. "E0E0E0").
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :achievement_count => integer() | nil,
          :assets => list(GoogleApi.Games.V1.Model.ImageAsset.t()) | nil,
          :author => String.t() | nil,
          :category => GoogleApi.Games.V1.Model.ApplicationCategory.t() | nil,
          :description => String.t() | nil,
          :enabledFeatures => list(String.t()) | nil,
          :id => String.t() | nil,
          :instances => list(GoogleApi.Games.V1.Model.Instance.t()) | nil,
          :kind => String.t() | nil,
          :lastUpdatedTimestamp => String.t() | nil,
          :leaderboard_count => integer() | nil,
          :name => String.t() | nil,
          :themeColor => String.t() | nil
        }

  field(:achievement_count)
  field(:assets, as: GoogleApi.Games.V1.Model.ImageAsset, type: :list)
  field(:author)
  field(:category, as: GoogleApi.Games.V1.Model.ApplicationCategory)
  field(:description)
  field(:enabledFeatures, type: :list)
  field(:id)
  field(:instances, as: GoogleApi.Games.V1.Model.Instance, type: :list)
  field(:kind)
  field(:lastUpdatedTimestamp)
  field(:leaderboard_count)
  field(:name)
  field(:themeColor)
end

defimpl Poison.Decoder, for: GoogleApi.Games.V1.Model.Application do
  def decode(value, options) do
    GoogleApi.Games.V1.Model.Application.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Games.V1.Model.Application do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
